﻿using System;
using System.Collections.Generic;
using System.Text;


public class StackExample
{
    // 将十进制数转换成八进制数（用栈进行存储显示）
    public void Conversion(int n)
    {
        LinkStack<int> s = new LinkStack<int>();
        while (n > 0)
        {
            s.Push(n % 8);
            n = n / 8;
        }

        while (!s.IsEmpty())
        {
            n = s.Pop();
            Console.WriteLine(n);
        }
    }

    // 匹配括号是否正确 " ([()])   ([[)[]) error "
    public bool MatchBracket(char[] charList)
    {
        SeqStack<char> s = new SeqStack<char>(50);
        int len = charList.Length;
        for (int i = 0; i < len; i++)
        {
            if (s.IsEmpty())
            {
                s.Push(charList[i]);
            }
            else if (((s.GetTop() == '(') && (charList[i] == ')')) || (s.GetTop() == '[' && charList[i] == ']'))
            {
                s.Pop();
            }
            else
            {
                s.Push(charList[i]);
            }
        }

        return s.IsEmpty();
    }

    // 处理四则运算表达式
    //public int EvaluateExpression()
    //{
    //    SeqStack<char> optr = new SeqStack<char>(20);
    //    SeqStack<int> opnd = new SeqStack<int>(20);
    //    optr.Push('#');
    //    //char c = Console.Read();
    //    char c = '1';
    //    char theta = 0;
    //    int a = 0;
    //    int b = 0;

    //    while (c != '#')
    //    {
    //        if ((c != '+') && (c != '-') && (c != '*') && (c != '/') && (c != '(') && (c != ')'))
    //        {
    //            opnd.Push(c);
    //        }
    //        else
    //        {
    //            switch (Precede(optr.GetTop(), c))
    //            {
    //                case '<':
    //                        optr.Push(c);

    //                    break;
    //            }
    //        }
    //    }
    //}
}
